package utils

import (
	"bufio" //缓存IO
	// "fmt"
	"io/ioutil"
	"os"
)

//检查文件是否存在
func FilePathExists(path string) (bool, error) {
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}

//读取文件
func ReadStrFile(path string) string {
	data, err := ioutil.ReadFile(path)
	if err != nil {
		panic(err)
	}

	return string(data)
}

//缓存方式追加写入文件
func WriteBufFile(filename string, context string) (n1 int, err error) {
	var f *os.File
	var err1 error
	f, err1 = os.OpenFile(filename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
	if err1 != nil {
		panic(err1)
	}
	w := bufio.NewWriter(f) //创建新的 Writer 对象
	defer func() {
		w.Flush()
		f.Close()
	}()
	n, err := w.WriteString(context)
	if err != nil {
		panic(err)
	}
	return n, nil
}

//覆盖写入文件
func RWriteBufFile(filename string, context string) (n1 int, err error) {
	var f *os.File
	var err1 error
	f, err1 = os.OpenFile(filename, os.O_CREATE|os.O_WRONLY, 0644)
	if err1 != nil {
		panic(err1)
	}
	w := bufio.NewWriter(f) //创建新的 Writer 对象
	defer func() {
		w.Flush()
		f.Close()
	}()
	n, err := w.WriteString(context)
	if err != nil {
		panic(err)
	}
	return n, nil
}
